﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using NaviCar.Servico.Entidades;
using Framework.Comum.DAL;
using NaviCar.Servico.Query;
using NaviCar.DB;

namespace NaviCar.Helpers
{
    public class HelperListas
    {
        public static IList<SelectListItem> Recuperar(string classeDados, string codigo, string descricao, string textoSelecione)
        {
            ServicoBase<Fake> servico = new ServicoBase<Fake>();
            List<SelectListItem> itens = new List<SelectListItem>();
            Type t = null;

            if (!string.IsNullOrEmpty(textoSelecione))
            {
                itens.Add(new SelectListItem { Value = "", Text = textoSelecione, Selected = true });
            }

            foreach (var item in servico.Repositorio(classeDados).Select(string.Format("new ({0} as Value, {1} as Text)", codigo, descricao)))
            {
                if (t == null) { t = item.GetType(); }
                itens.Add(new SelectListItem() { Text = t.GetProperty("Text").GetValue(item, null).ToString(), Value = t.GetProperty("Value").GetValue(item, null).ToString() });                
            }

            return itens;
        }

        public static IList<SelectListItem> Recuperar(string chave)
        {
            List<SelectListItem> itens = new List<SelectListItem>();
            itens.Add(new SelectListItem { Value = "", Text = "Selecione", Selected = true });

            switch (chave)
            {
                case "VeiculoPessoa":
                    itens.AddRange(RecuperarVeiculosPessoa());
                    break;
                default:
                    break;
            }

            
            return itens;
        }

        private static IEnumerable<SelectListItem> RecuperarVeiculosPessoa()
        {
            int codigoPessoa = Contexto.RecuperarValorCodigoPessoaCookie();

            ServicoBase<Veiculo> servico = new ServicoBase<Veiculo>();

            IList<Veiculo> v = servico.Recuperar(f => f.CodigoPessoa == codigoPessoa).OrderBy(f => f.Placa).Select(f=>f).ToList();

           IEnumerable<SelectListItem> retorno = v.Select(f=> new SelectListItem {Text= f.Placa, Value = f.CodigoVeiculo.ToString()}).ToArray();

           return retorno;
        }

    }
}